package com.example.demo.controller;

import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

	private final Logger log = LoggerFactory.getLogger(HelloController.class);

	@Autowired
	private DiscoveryClient discoveryClient;

	@RequestMapping(value = "/hello", method = RequestMethod.GET)
	public String hello() {
		List<ServiceInstance> service = discoveryClient.getInstances("hello-service");
		log.info("/hello,host:" + service.get(0).getHost() + ",ServiceId:" + service.get(0).getServiceId() + ",Port:"
				+ service.get(0).getPort());

		return "Hello Spirng Cloud";
	}

	@RequestMapping(value = "/hello/name/{name}", method = RequestMethod.GET)
	public String hello(@PathVariable("name") String name) {
		List<ServiceInstance> service = discoveryClient.getInstances("hello-service");
		log.info("/hello/name,host:" + service.get(0).getHost() + ",ServiceId:" + service.get(0).getServiceId()
				+ ",Port:" + service.get(0).getPort());

		return "Hello" + name;
	}

	@RequestMapping(value = "/hello/updateName", method = RequestMethod.POST)
	public void updateHello(@RequestBody String name) {
		log.info("Update SUCCESS:" + name);
	}
}
